// Loesung_von_Aufgabe_10.3_3b_Uhren_02

float tA; // Zeitschritt für die Uhr in der Nähe der Masse
float tB = 0.3; // Zeitschritt für die sehr weit entfernte Uhr 
float g = 6.6726E-11; // Gravitationskonstante
float m = 2E33; // 1000fache Masse der Sonne
float c = 3E8; // Lichtgeschwindigkeit
float r = 3E6; // Abstand der Uhr A vom Mittelpunkt der Masse. Entspricht 100 Pixel im Fenster

void setup()
{
  size(800, 300);
}

void draw()
{
  background(220);

  // Masse zeichnen
  noStroke();
  fill(0, 0, 0);
  ellipse(50, 150, 50, 50);

  tA = tB*(1-(g*m)/(c*c*r)); // Berechnung der Zeitdilatation

  // Weit entfernte Uhr zeichnen
  stroke(0);
  strokeWeight(2);
  fill(0, 180, 180);
  ellipse(700, 150, 125, 125);
  // Zeiger der Uhr zeichnen
  float zeigerwinkel = tB * millis() / 200.0;
  stroke(0, 255, 0);
  strokeWeight(3);
  line(700, 150, 700 + 60 * cos(zeigerwinkel), 150 + 60 * sin(zeigerwinkel));

  // Beeinflusste Uhr zeichnen
  stroke(0);
  strokeWeight(2);
  fill(0, 180, 180);
  ellipse(150, 150, 125, 125);
  // Zeiger der Uhr zeichnen
  zeigerwinkel = tA * millis() / 200.0;
  stroke(255, 0, 0);
  strokeWeight(3);
  line(150, 150, 150 + 60 * cos(zeigerwinkel), 150 + 60 * sin(zeigerwinkel));

  // Zeitangabe
  textSize(30);
  fill(255, 0, 0);
  text("Uhr A", 110, 60);
  text(round(tA*millis()/200), 130, 260);
  fill(0, 200, 0);
  text("Uhr B", 660, 60);
  text(round(tB*millis()/200), 680, 260);
}